package semana2.bucles.ejercicio22;

import java.util.Scanner;

public class Ejercicio22 {
	private static Scanner scan;

	public static void main(String[] args) {
		scan = new Scanner(System.in);
		inicializar();
	}

	private static void inicializar() {
		int opcion;

		do {

			System.out.println("1.- Calculos numericos");
			System.out.println("2.- Perimetros y areas");
			System.out.println("3.- Figuras asteriscos");
			System.out.println("0.- Salir");

			System.out.print("Elige una opcion: ");
			opcion = scan.nextInt();
			if (opcion != 0) {
				switch (opcion) {
				case 1:
					calculos();
					break;
				case 2:
					perimetrosYAreas();
					break;
				case 3:
					figurasAsteriscos();
					break;
				default:
					System.out.println("Introduce un dato valido.");

				}
			}
		} while (opcion != 0);
		System.out.println("Hasta luego!!!");
	}

	private static void figurasAsteriscos() {
		System.out.println("1.- Cuadrado de asteriscos");
		System.out.println("2,- Rectangulo de asteriscos.");
		System.out.println("0.- Volver al menu inicial.");

		int opcionAsterisco = scan.nextInt();
		int n;
		int altura;
		switch (opcionAsterisco) {
		case 1:
			System.out.println("Dame la base: ");
			n = scan.nextInt();
			if (n >= 5 && n <= 20) {

				for (int i = 1; i <= n; i++) {
					if (i == 1 || i == n) {

						for (int j = 1; j < n; j++) {
							System.out.print("*");
						}

					} else {

						System.out.print("*");// asterisco de la izquierda
						// n - 2 porque a los espacios se le restan los * de los
						// extremos
						for (int iB = 1; iB <= n - 2; iB++) {

							System.out.print(" ");
						}
					}
					System.out.println("*");// asterisco exremo derecha
				}
			}
			break;
		case 2:

			System.out.println("Dame la base: ");
			n = scan.nextInt();
			System.out.println("Dame la altura: ");
			altura = scan.nextInt();

			for (int i = 1; i <= altura; i++) {
				if (i == 1 || i == altura) {

					for (int j = 1; j < n; j++) {
						System.out.print("*");
					}

				} else {

					System.out.print("*");// asterisco de la izquierda
					// n - 2 porque a los espacios se le restan los * de los
					// extremos
					for (int iB = 1; iB <= n - 2; iB++) {

						System.out.print(" ");
					}
				}
				System.out.println("*");// asterisco exremo derecha
			}

			break;
		case 0:
			inicializar();
			break;
		}

	}

	private static void perimetrosYAreas() {
		System.out.println("1.- Perimetro y area de cuadrado");
		System.out.println("2,- Perimetro rectangulo.");
		System.out.println("0.- Volver al menu inicial.");

		int opcionPerimetro = scan.nextInt();
		int n;
		switch (opcionPerimetro) {
		case 1:
			System.out.println("Dame el valor de un lado: ");
			n = scan.nextInt();
			System.out.println("Area: " + (n * n));
			System.out.println("Perimetro:" + (n * 4));
			break;
		case 2:
			System.out.println("Dame la base: ");
			n = scan.nextInt();
			System.out.println("Dame la altura: ");
			int n2 = scan.nextInt();

			System.out.println("Perimetro: " + ((2 * n) + (2 * n2)));

			break;
		case 0:
			inicializar();
			break;
		default:
			System.out.println("Introduce una opcion valida");
		}

	}

	private static void calculos() {
		System.out.println("1.- Elevar al cuadrado");
		System.out.println("2.- Elevar al cubo");
		System.out.println("0.- Volver al menu inicial.");

		int opcionCalculos = scan.nextInt();
		int n;
		switch (opcionCalculos) {
		case 1:
			System.out.println("Dame un numero: ");
			n = scan.nextInt();
			System.out.println("Resultado: " + (n * n));
			inicializar();
			break;
		case 2:
			System.out.println("Dame un numero: ");
			n = scan.nextInt();
			System.out.println("Resultado: " + (n * n * n));
			inicializar();
			break;
		case 0:
			inicializar();
			break;
		default:
			System.out.println("Introduce una opcion valida");
		}
	}

}
